In general, software are developed using a hierarchical structure. For example, the hierarchical structure may include functions or procedures at a lowest level, applications at a next higher level, packages at yet another higher level, and so on. A codebase is a collection of codes at the package level and all associated levels. One problem with developing codebase using the hierarchical structure is that it is difficult to identify design problems and to evaluate the quality of the codebase at the various levels.